1. ОБЗОР SWING
В стандарт Java входит два пакета для создания оконного пользовательского интерфейса: AWT и его надстройка Swing. Компоненты Swing имеют расширенные возможности по сравнению с аналогичными AWT компонентами, поэтому упор будет сделан на них. Во-вторых, в отличие от AWT компоненты Swing не содержат платформо-зависимого кода.
1.1. Контейнеры верхнего уровня
JApplet - главное окно апплета;
JFrame - окно приложения;
JDialog - диалог приложения;
JColorChooser - диалог выбора цвета;
JFileChooser - диалог выбора файлов и директорий;
FileDialog - диалог выбора файлов и директорий (AWT компонент).
1.2. Простые контейнеры
JPanel - простая панель для группировки элементов, включая вложенные панели;
· JToolBar - панель инструментов (обычно это кнопки);
JScroolPane - панель прокрутки, позволяющая прокручивать содержимое дочернего элемента;
JDesktopPane - контейнер для создания виртуального рабочего стола или приложений на основе MDI (multiple-document interface);
JEditorPane, JTextPane - контейнеры для отображения сложного документа как HTML или RTF;
· JTabbedPane - контейнер для управления закладками;
JSplitPane - контейнер, разделяющий два элемента и позволяющий пользователю изменять их размер.
1.3. Элементы интерфейса
Следующие элементы управления могут использоваться и как контейнеры, так как наследуются от класса java.awt.Container.
JButton - кнопка;
JCheckBox - кнопка-флажок;
JComboBox - выпадающий список;
JLabel - метка, надпись;
JList - список;
JPasswordField - текстовое поле для скрытого ввода;
JProgressBar - компонент для отображения числа в некотором диапазоне;
JRadioButton - переключатели, радио-кнопки, обычно используется с компонентом ButtonGroup;
JSlider - компонент позволяющий выбрать значение из заданного диапазона;
JSpinner - компонент позволяющий выбрать значение из указанной последовательности;
JTable - таблица;
JTextField - однострочное текстовое поле;
JFormattedTextField - однострочное текстовое поле, позволяющее вводить значения в определенном формате;
JTextArea - многострочное текстовое поле;
JTree - дерево.
2. ОСНОВНЫЕ СОБЫТИЯ КОМПОНЕТ
|
№ п/п |
Событие |
Назначение |
|
1. |
actionPerformed |
Нажатие на компонент |
|
2. |
valueChanged |
Изменение выбранного значения из списка (для JList) |
|
3. |
stateChanged |
Изменение выбранного значения из списка (для JSlider, JSpinner) |
|
4. |
adjustmentValueChanged |
Изменение выбранного значения из списка (для JScrollBar) |
|
5. |
keyTyped |
Ввод символа с клавиатуры |
|
6. |
keyPressed |
Нажатие кнопки на клавиатуре |
|
7. |
keyReleased |
Отжатие кнопки на клавиатуре |
|
8. |
mousePressed |
Нажатие кнопки мыши |
|
9. |
mouseClicked |
Отжатие кнопки мыши |
|
10. |
mouseReleased |
Отжатие кнопки мыши с выделением |
|
11. |
mouseEntered |
Перемещение мыши над компонентом |
|
12. |
mouseExited |
Убирание мыши с компонента |
|
13. |
mouseWheelMoved |
Прокрутка колеса мышки |
|
14. |
focusGained |
Получение фокуса ввода |
|
15. |
focusLost |
Потеря фокуса ввода |
3. ОБЫЧНОЕ ОКНО «JFrame» И МОДАЛЬНОЕ ОКНО «JDialog»

Окно «JFrame» для создания оконного приложения в Java. Это основной контейнер, на котором располагаются другие компоненты, создающие внешний вид и интерфейс программы.
Модальное окно служит JDialog для создания вспомогательных окон, вызываемых по мере необходимости, из главного окна JFrame. Особенность окна JDialog состоит в том, что оно открывается в модальном режиме: пока данное окно не будет закрыто, в вызвавшем его основном окне JFrame будет приостановлена работа. Окна JDialog используются для выдачи диалогов «О программе», диалогов подтверждения удаления и т.п.
|
№ п/п |
Свойство |
Назначение |
|
1. |
title |
Заголовок формы |
|
2. |
resizable |
Разрешение изменения размеров формы |
|
3. |
undecorated |
Убирание рамки и заголовка окна |
|
4. |
defaultCloseOperation |
Действие окна при его закрытии: EXIT_ON_CLOSE – выйти из программы (установка по умолчанию для JFrame); DISPOSE – удалиться из памяти (окно больше не нужно) (установка по умолчанию для JDialog); HIDE – спрятаться в памяти (для повторного вызова); DO_NOTHING – ничего не делать (окно не закроется). |
|
5. |
enabled |
Доступность формы |
|
6. |
alwaysOnTop |
Всегда поверх других окон |
|
7. |
cursor |
Вид курсора |
|
№ п/п |
События |
Назначение |
|
1. |
windowOpened |
Открытие/разворачивание окна |
|
2. |
windowActivated |
Активация окна (переход в окно из другой программы) |
|
3. |
windowClosing |
Закрытие окна |
|
4. |
windowDeactivated |
Деактивация окна (переход из окна в другую программу) |
|
5. |
windowIconified |
Сворачивание окна |
|
№ п/п |
Методы |
Назначение |
|
1. |
setVisible(true) |
Включить видимость окна на экране |
|
2. |
setVisible(false) |
Выключить видимость окна на экране |
|
3. |
dispose |
Удалить окно |
|
4. |
isVisible |
Проверка, видно ли окно на экране |
|
5. |
isActive |
Проверка, активно ли окно (программа) |
|
6. |
setState(JFrame.ICONIFIED) |
Свернуть окно |
|
7. |
setState(JFrame.NORMAL) |
Развернуть окно |
|
8. |
setExtendedState(JFrame.MAXIMIZED_BOTH) |
Распахнуть окно на весь экран |
|
9. |
setExtendedState(JFrame.NORMAL) |
Восстановить нормальный размер окна |
ПРИМЕЧАНИЕ: для закрытия всей программы используется следующий метод: «System.exit(0)»
3.1. Размещение формы по центру
Для размещения формы по центру необходимо нажать правой кнопкой мыши по окну, в контекстном меню выбрать пункт «Свойства». Далее необходимо выбрать вкладку «Код» и в ней указать:
1. «Политика размещения формы» - «Создать код изменения размера»;
2. «Создать размер» - нужно установить галочку на данном пункте;
3. «Создать центрирование» - нужно установить галочку на данном пункте.

3.2. Размещение компонент на форме
Для свободного размещения компонент на форме необходимо нажать правой кнопкой мыши по окну, в контекстном меню выбрать пункт «Установить расположение». Далее необходимо выбрать значение «Нет размещения».

3.3. Установка внешнего вида окна в стиле «Windows»
Для установки внешнего вида окна в стиле «Windows», необходимо зайти в программный код окна (вкладка «Источник»), раскрыть весь программный код (нажав на значки «+»), и найти следующий фрагмент кода:
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
Далее, необходимо заменить слово "Nimbus" на слово «Windows», соблюдая регистр символов:

3.4. Изменение цвета формы
Для изменения цвета формы необходимо зайти в программный код окна (вкладка «Источник»), раскрыть весь программный код (нажав на значки «+»), и найти следующий фрагмент кода:
public NewJFrame() {
initComponents();
}
После строки «initComponents();» необходимо вставить дополнительную новую строку «this.getContentPane().setBackground(java.awt.Color.ORANGE);», где «ORANGE» - желаемый цвет формы:
public NewJFrame() {
initComponents();
this.getContentPane().setBackground(java.awt.Color.ORANGE);
// this.getContentPane().setBackground(new java.awt.Color(100, 100, 200)); // Цвет указан в формате RGB
}
3.5. Стандартные цвета
|
№ |
Название цвета |
Цвет |
|
1. |
black |
Черный |
|
2. |
blue |
Синий |
|
3. |
cyan |
Голубой |
|
4. |
darkGray |
Темно-серый |
|
5. |
gray |
Серый |
|
6. |
green |
Зеленый |
|
7. |
lightGray |
Светло-серый |
|
8. |
magenta |
Пурпурный |
|
9. |
orange |
Оранжевый |
|
10. |
pink |
Розовый |
|
11. |
red |
Красный |
|
12. |
white |
Белый |
|
13. |
yellow |
Желтый |
3.6. Изменение иконки формы
Для изменения иконки формы, отображаемой в верхнем левом углу окна, необходимо:
1) скинуть иконку формата «jpg» или «png» в папку, где располагаются файлы проекта с расширением «java» (например, «D:\WRK\Java\TSN_lab1\src\tsn_lab1»;
2) зайти через инспектор объектов в свойство «iconImage»;
3) установить использование свойства в значение «Изменяемый код»;
4)
в открывшемся окне ввести строку
«java.awt.Toolkit.getDefaultToolkit().createImage(getClass().getResource("icon.png"))» с именем
иконки (в этом примере «icon.png») и нажать на кнопку
«OK».

4. КНОПКА «JButton»
![]()
Кнопки служат для привязки к ним процедур, вызываемых при их нажатии.
|
№ п/п |
Свойство |
Назначение |
|
1. |
background |
Цвет фона кнопки |
|
2. |
enabled |
Доступность компонента |
|
3. |
font |
Шрифт текста кнопки |
|
4. |
foreground |
Цвет текста кнопки |
|
5. |
horizontalAlignment |
Выравнивание текста кнопки и картинки по горизонтали |
|
6. |
horizontalTextPosition |
Выравнивание текста кнопки по горизонтали |
|
7. |
icon |
Картинка (jpeg, gif, png) или ссылка из сети |
|
8. |
text |
Текст кнопки |
|
9. |
opaque |
Непрозрачность фона |
|
10. |
border |
Рамка |
|
11. |
componentPopupMenu |
Привязка компонента всплывающего меню |
|
12. |
contentAreaFilled |
Убирание у кнопки рамки и фона |
|
13. |
cursor |
Вид курсора |
|
14. |
disabledIcon |
Картинка кнопки при ее недоступности |
|
15. |
focusable |
Разрешение фокуса ввода по клавише Tab |
|
16. |
iconTextGap |
Отступ между картинкой и текстом |
|
17. |
label |
Текст надписи кнопки |
|
18. |
pressedlcon |
Картинка кнопки при нажатии |
|
19. |
rolloverIcon |
Картинка кнопки при наведении мышки |
|
20. |
toolTipText |
Всплывающая подсказка над компонентом |
|
21. |
verticalAlignment |
Выравнивание текста и картинки по вертикали |
|
22. |
verticalTextPosition |
Выравнивание текста по вертикали |
|
23. |
Высота |
Высота кнопки |
|
24. |
Ширина |
Ширина кнопки |
5. КОМПОНЕНТ JPanel (панель)

Компонент JPanel служит для декоративных целей, а также как контейнер для размещения на нем других компонент.
Для произвольного размещения на панели компонент необходимо щелкнуть по панели правой кнопкой мыши, из контекстного меню выбрать опцию «Установить расположение» - «Нет размещения».
|
№ п/п |
Свойство |
Назначение |
|
1. |
border |
Вид рамки у панели |
|
2. |
foreground |
Цвет панели |
|
3. |
toolTipText |
Всплывающая подсказка |
|
№ п/п |
Методы |
Назначение |
|
1. |
setVisible |
Включить/выключить видимость панели. При выключении видимости панель, и все компоненты на ней, становятся невидимыми, после включения видимости панель становится видимой и все компоненты на ней |
5.1. Пример работы с панелью JPanel
private void jCheckBox1ActionPerformed(java.awt.event.ActionEvent evt) {
// Включение/выключение видимости панели JPanel
if (jCheckBox1.isSelected()) { // Если флажок выбран, то включить видимость панели
jPanel1.setVisible(true); // Включить видимость панели
} else {
jPanel1.setVisible(false); // Выключить видимость панели
}
}
5.2. Виды рамок у панелей JPanel (свойство border)

6. КОМПОНЕНТ JTabbedPane (вкладки панели)

Компонент JTabbedPane служит для создания панелей вкладок. Для создания панелей вкладок необходимо:
1) нанести компонент JTabbedPane;
2) нанести на компонент JTabbedPane нужное количество панелей JPanel. Каждая нанесенная панель будет являться вкладкой в компоненте JTabbedPane.
|
№ п/п |
Свойство |
Назначение |
|
1. |
selectedIndex |
Номер активной вкладки (отсчет с 0) |
|
2. |
tabPlacement |
Место расположения ярлыков вкладок (вверху, внизу, слева, справа) |
|
3. |
tabLayoutPolicy |
Режим отображения ярлыков вкладок при множестве вкладок: SCROLL_TAB_LAYOUT - вкладки в один ряд с прокруткой; WRAP_TAB_LAYOUT - несколько рядов вкладок без прокрутки. |
|
4. |
font |
Шрифт надписей вкладки |
|
5. |
foreground |
Цвет надписей (ярлыков) панели |
|
6. |
border |
Вид рамки у панели |
|
7. |
toolTipText |
Всплывающая подсказка |
|
8. |
X |
Положение верхнего левого угла компонента, координата X |
|
9. |
Y |
Положение верхнего левого угла компонента, координата Y |
|
10. |
Ширина |
Ширина компонента |
|
11. |
Высота |
Высота компонента |
|
№ п/п |
События |
Назначение |
|
1. |
stateChanged |
Переключение активной вкладки |
|
№ п/п |
Методы |
Назначение |
|
1. |
getSelectedIndex |
Получение номера текущей (активной) вкладки (отсчет с 0) |
|
2. |
setSelectedIndex |
Установка желаемой активной (текущей) вкладки (отсчет с 0) |
|
3. |
getTabCount |
Получение количества вкладок в компоненте (отсчет с 1) |
При добавлении панелей-вкладок JPanel у панелей появляются дополнительные новые свойства: «Заголовок вкладки» - для задания названия вкладки, «Значок вкладки» - для выбора картинки вкладки (располагается слева от заголовка вкладки), «Подсказка вкладки» - всплывающая подсказка при наведении курсора мыши на вкладку.
6.1. Пример работы с вкладками JTabbedPane
private void jTabbedPane1StateChanged(javax.swing.event.ChangeEvent evt) {
// Выдача номер текущей вкладки в JTabbedPane при переключении вкладок
JOptionPane.showMessageDialog(rootPane, String.valueOf(jTabbedPane1.getSelectedIndex()));
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// Выдача количества вкладок в JTabbedPane
JOptionPane.showMessageDialog(rootPane, String.valueOf(jTabbedPane1.getTabCount()));
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
// Переключение активной вкладки в JTabbedPane
jTabbedPane1.setSelectedIndex(2);
}